/*
面向对象 5 原则
S 单一职责 (SRP)
O 开闭原则 OCP
L 里氏替换原则 LSP
I 接口隔离原则 LSP
D 依赖倒置原则 DIP
*/